Telegram Group & Telegram Channel
🖥 Задача (с подвохом). Что выведет этот код?


def extend_list(val, lst=[]):
lst.append(val)
return lst

# Первый вызов: используем список по умолчанию
list1 = extend_list(10)
# Второй вызов: передаём новый пустой список
list2 = extend_list(123, [])
# Третий вызов: снова используем список по умолчанию
list3 = extend_list('a')

print('list1 =', list1)
print('list2 =', list2)
print('list3 =', list3)

🧩 Решение

Механика дефолтного списка
В сигнатуре функции lst=[] создаётся один список при определении функции и затем переиспользуется во всех вызовах, где lst не передан.

Первый вызов

```python
list1 = extend_list(10)
lst не передан → берётся дефолтный список.

Добавляем 10.
⇒ list1 становится [10].
```p
Второй вызов

```python
list2 = extend_list(123, [])```

Передаём новый пустой список [].

В него добавляется 123.
⇒ list2 становится [123].

Третий вызов

```python
list3 = extend_list('a')```

Опять не передан
lst → используется тот же дефолтный список, куда уже был добавлен 10.

Добавляем 'a'.
⇒ дефолтный список становится [10, 'a'], и list3 тоже ссылается на [10, 'a'].

Итоговый вывод программы:

```python
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']```

Обратите внимание, что
list1 и list3 — это один и тот же дефолтный список, поэтому изменения сохраняются между вызовами.

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/pythonl/4789
Create:
Last Update:

🖥 Задача (с подвохом). Что выведет этот код?


def extend_list(val, lst=[]):
lst.append(val)
return lst

# Первый вызов: используем список по умолчанию
list1 = extend_list(10)
# Второй вызов: передаём новый пустой список
list2 = extend_list(123, [])
# Третий вызов: снова используем список по умолчанию
list3 = extend_list('a')

print('list1 =', list1)
print('list2 =', list2)
print('list3 =', list3)

🧩 Решение

Механика дефолтного списка
В сигнатуре функции lst=[] создаётся один список при определении функции и затем переиспользуется во всех вызовах, где lst не передан.

Первый вызов

```python
list1 = extend_list(10)
lst не передан → берётся дефолтный список.

Добавляем 10.
⇒ list1 становится [10].
```p
Второй вызов

```python
list2 = extend_list(123, [])```

Передаём новый пустой список [].

В него добавляется 123.
⇒ list2 становится [123].

Третий вызов

```python
list3 = extend_list('a')```

Опять не передан
lst → используется тот же дефолтный список, куда уже был добавлен 10.

Добавляем 'a'.
⇒ дефолтный список становится [10, 'a'], и list3 тоже ссылается на [10, 'a'].

Итоговый вывод программы:

```python
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']```

Обратите внимание, что
list1 и list3 — это один и тот же дефолтный список, поэтому изменения сохраняются между вызовами.

@pythonl

BY Python/ django




Share with your friend now:
tg-me.com/pythonl/4789

View MORE
Open in Telegram


Python django Telegram | DID YOU KNOW?

Date: |

What Is Bitcoin?

Bitcoin is a decentralized digital currency that you can buy, sell and exchange directly, without an intermediary like a bank. Bitcoin’s creator, Satoshi Nakamoto, originally described the need for “an electronic payment system based on cryptographic proof instead of trust.” Each and every Bitcoin transaction that’s ever been made exists on a public ledger accessible to everyone, making transactions hard to reverse and difficult to fake. That’s by design: Core to their decentralized nature, Bitcoins aren’t backed by the government or any issuing institution, and there’s nothing to guarantee their value besides the proof baked in the heart of the system. “The reason why it’s worth money is simply because we, as people, decided it has value—same as gold,” says Anton Mozgovoy, co-founder & CEO of digital financial service company Holyheld.

A Telegram spokesman declined to comment on the bond issue or the amount of the debt the company has due. The spokesman said Telegram’s equipment and bandwidth costs are growing because it has consistently posted more than 40% year-to-year growth in users.

Python django from it


Telegram Python/ django
FROM USA